/*
 * SnmpOidApi.h
 *
 *  Created on: 2016-1-12
 *      Author: root
 */

#ifndef SNMPOIDAPI_H_
#define SNMPOIDAPI_H_
//对OID进行操作的API
//只保留 oid，netsnmp_variable_list声明，其余隐藏
//其它引用必须在此之前引用
//#include <net-snmp/net-snmp-config.h>
//#include <net-snmp/net-snmp-includes.h>
#ifndef NET_SNMP_TYPES_H
#include <net-snmp/net-snmp-config.h>
#include <sys/types.h>
//主要获取oid声明
#include <net-snmp/library/oid.h>
//#include <net-snmp/library/asn1.h>
//#include <net-snmp/library/snmp_impl.h>
//引用了API函数 不是我们想要的
//#include <net-snmp/types.h>
typedef struct variable_list {
   /** NULL for last variable */
   struct variable_list *next_variable;    
   /** Object identifier of variable */
   oid            *name;   
   /** number of subid's in name */
   size_t          name_length;    
   /** ASN type of variable */
   u_char          type;   
} netsnmp_variable_list;
//常见类型
#define ASN_BOOLEAN         0x01
#define ASN_INTEGER         0x02
#define ASN_BIT_STR         0x03
#define ASN_OCTET_STR       0x04
#define ASN_NULL            0x05
#define ASN_OBJECT_ID       0x06
//#define ASN_SEQUENCE        0x10
//#define ASN_SET             0x11
#define ASN_IPADDRESS       0x40
#define ASN_COUNTER         0x41
#define ASN_GAUGE           0x42
#define ASN_UNSIGNED        0x42
#define ASN_TIMETICKS       0x43
#define ASN_COUNTER64       0x46
#define ASN_UINTEGER      0x47

#endif
#include "PublicTool.h"
typedef struct _SnmpOidInfo{
char   strName[64];//中文名
//oid    oidName[MAX_OID_LEN];//OID
oid    oidName[128];//OID
size_t oidLen;//长度
u_char oidType;//OID类型
}SnmpOidInfo;
//OID后跟任意数字
void OidAddNum(SnmpOidInfo&oidinfo,long num);
//OID后接IP
void OidAddIP(SnmpOidInfo&oidinfo,const char*IP);
#if 0
//OID后接Mac,没用到
void OidAddMac(SnmpOidInfo&oidinfo,const char*Mac);
//OID读取IP,没用到
void OidReadIP(SnmpOidInfo&oidinfo,int Pos,char*IP);
//OID读取Mac
void OidReadMac(SnmpOidInfo&oidinfo,int Pos,char*Mac);
#endif
//OID读取IP
void OidReadIP(oid*name,int Pos,char*IP);
//OID读取IPV6
void OidReadIPV6(oid*name,int Pos,char*IPV6);
//OID读取Mac
void OidReadMac(oid*name,int Pos,char*Mac);
#if 0
//OID后接Mac,没用到
void OidAddMac(oid*name,size_t*len,const char*strMAC);
//新版未使用
//OID后接IP,改用OidAddIP
void OidAddIP(oid*name,size_t*len,const char*strIP);
//OID后接Port，改用OidAddNum
void OidAddIndex(oid*name,size_t*len,long port);
#endif
//检测思科是否符合继续标志
//返回VLANID,0无效
long CheckCiscoVLAN(netsnmp_variable_list*var,const char*IP,const char*Descr);

#endif /* SNMPOIDAPI_H_ */
